﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sonic.Framework.ProcessorToolDirectives;

namespace Sonic.Framework.Interfaces
{
    /// <summary>
    /// Interface for a ProcessorTool Directive.
    /// A ProcessorToolDirective is a plugin architecture to allow modification to site files.
    /// Each plugin must implement this interface.
    /// </summary>
    public interface IProcessorToolDirective
    {
        /// <summary>
        /// Name of this plugin
        /// </summary>
        string Name
        {
            get;
        }

        /// <summary>
        /// When should this processor tool directive be executed in the process lifecycle
        /// </summary>
        ExecutionOrder ExecutionOrder
        {
            get;
        }

        /// <summary>
        /// Execute's the processor tool directive
        /// </summary>
        /// <returns>Success</returns>
        bool Execute(Dictionary<string, string> attributes);
    }
}
